package com.guan.common.core.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 统一响应数据的状态码枚举类
 * 自定义状态码能过够更好地表达业务响应情况
 */
@Getter
@AllArgsConstructor
public enum ResultCode {

    /**
     * 定义状态码
     */
    //操作成功
    SUCCESS(1000, "操作成功"),

    //服务器内部错误，友好提⽰
    ERROR(2000, "服务繁忙请稍后重试"),

    //操作失败，但是服务器不存在异常
    FAILED(3000, "操作失败"),
    FAILED_UNAUTHORIZED(3001, "未授权"),
    FAILED_PARAMS_VALIDATE(3002, "参数校验失败"),
    FAILED_NOT_EXISTS(3003, "资源不存在"),
    FAILED_ALREADY_EXISTS(3004, "资源已存在"),
    NULL_POINTER_EXCEPTION(3005, "空指针异常"),
    DATABASE_ERROR(3006, "数据库异常"),
    DATA_INTEGRITY_VIOLATION(3007, "数据约束违反"),
    FAILED_LOGOUT(3008, "退出登录失败"),
    TOKEN_PARAMS_VALIDATE(3009, "token身份不正确或者token==null"),
    AILED_USER_EXISTS(3101, "用户已存在"),
    FAILED_USER_NOT_EXISTS(3102, "用户不存在"),
    FAILED_LOGIN(3103, "用户名或密码错误"),
    FAILED_USER_BANNED(3104, "您已被列⼊⿊名单, 请联系管理员."),
    FAILED_USER_PHONE(3105, "用户的手机号不符合格式"),
    FAILED_FREQUENT(3106, "操作频繁,请稍后重试"),
    FAILED_COUNT_LIMIT(3107, "当天请求验证码次数已经达到上限"),
    FAILED_SEND_CODE(3108, "验证码发送错误"),
    FAILED_CODE_INVALID(3109, "验证码失效"),
    FAILED_CODE_ERROR(3110, "验证码无效"),

    EXAM_START_TIME_BEFORE_CURRENT_TIME(3201, "竞赛开始时间不能早于当前时间"),

    EXAM_START_TIME_BEFORE_END_TIME(3202, "竞赛开始时间不能晚于结束时间"),

    EXAM_NOT_EXISTS(3203, "竞赛不存在"),

    EXAM_QUESTION_NOT_EXISTS(3204, "为竞赛新增的题目不存在"),

    EXAM_STARTED(3205, "竞赛已经开始，无法进行操作"),

    EXAM_NOT_HAS_QUESTION(3206, "竞赛当中不包含题目"),

    EXAM_IS_FINISH(3207, "竞赛已经结束不能进行操作"),

    EXAM_IS_PUBLISH(3208, "竞赛已经发布不能进行编辑、删除操作"),

    USER_EXAM_HAS_ENTER(3301, "用户已经存在,无需重复报名"),

    FAILED_FILE_UPLOAD(3401, "文件上传失败"),

    FAILED_FILE_UPLOAD_TIME_LIMIT(3402, "当天上传图片数量超过限制"),

    FAILED_NO_PRE(3501, "当前题目已经是第一题"),

    FAILED_NO_NEXT(3502, "当前题目已经是最后一题了"),

    FAILED_NOT_SUPPORT_PROGRAM(3601, "当前不支持该语言作答"),

    FAILED_RABBIT_PRODUCE(3701, "mq生产消息出现异常");


    /**
     * 状态码
     */
    private int code;
    /**
     * 状态描述
     */
    private String msg;

}
